Present day computer systems store digital data in a variety of storage devices including magnetic tape drives, magnetic disk drives and semiconductor memories. To permit the computer system, which is usually called the "host" system, to operate with these storage devices, an interface circuit called a "controller" is connected between the storage device and the computer. The controller receives coded commands from the host system and translates these commands into the various signals which are needed to physically operate the storage device to allow it to store and retrieve data. In order to relieve the host computer from as much of the routine "bookkeeping" tasks as possible, the controller circuit may also perform format conversion by converting the data from the form in which it is stored in the storage device into a form which is used in the computer. Some controller circuits also perform error detection and correction.
The functions performed by the controller circuitry obviously vary depending on the class of storage device to which it is connected. For example, data to be stored must often be converted between the parallel form used internally in the computer and the serial form used in some magnetic tape drives and disk storage units. Even if the controller is to operate with a single class of storage device, the operation of the controller is so intimately associated with the operation of the associated device that the functions and operation of the controller circuitry may depend on the particular characteristics of the device. For example, there are several different types of magnetic tape drives in present use.
One conventional magnetic tape drive called a "start/stop" drive utilizes motor-driven capstans and pinch rollers to maintain a constant tape speed. The motor drives which run the capstans are often controlled by sophisticated servomechanisms and can quickly accelerate and decelerate the tape so that it can be brought to any desired location.
Another type of magnetic tape drive which is commonly used is called a "bit streaming" drive. With this type of drive there is no servomechanism, rather the tape is moved by a less precisely controlled motor. Bit streaming systems, although much less expensive than start/stop servo-controlled drives, have the characteristic that the tape cannot be speeded up quickly to its operating speed nor can it be decelerated quickly to a stop. Therefore, when data is to be written or read from the units the tape must be gradually accelerated to operating speed, the data written and then the tape allowed to coast to a stop. Typically, the accelerating and decelerating portions of the writing cycle are of such length that several blocks or pieces of data may pass by the reading or writing head before the system is running at a stable speed and is ready to operate.
It is desirable to have one controller circuit which can operate with both start/stop drives and bit streaming drives. However, a controller circuit which is to operate with both of these types of tape drives must be able to accomodate the differences in operation. Most prior art tape controllers have not been able to operate satisfactorily with both start/stop drives and bit streaming drives because conventional tape controllers have been unable to perform error correction while the tape is moving ("on-the-fly" error correction). In start/stop drives the tape can be positioned accurately to correct errors, but in bit streaming devices it is often impossible to stop the tape to correct errors because by the time the tape coasts to a stop, the portion of the tape which contains the errors is usually several blocks past the read and write head area. Therefore with bit streaming tape drives error correction had to be performed by the computer itself causing a large amount of processing time to be devoted to error correction.
It is therefore an object of the present invention to provide a tape drive controller which will operate satisfactorily with either start/stop drives or bit streaming tape drives.
It is another object of the present invention to provide a tape drive controller which can perform error correction "on-the-fly".
It is yet another object of the present invention to be able to perform "on-the-fly" error correction with both start/stop tape drives and bit streaming tape drives.
It is a further object of the present invention to provide a tape controller which does not require a large amount of software overhead in the host computer.
It is still another object of the present invention to provide a tape drive controller which can be constructed from readily available components.